import CryptoJS from 'crypto-js'

// 腾讯云翻译API服务 - 通过后端代理调用
export const translateText = async (text: string, targetLanguage: string = 'zh'): Promise<string> => {
  try {
    // 通过后端代理调用腾讯云翻译API
    const response = await fetch('/api/translate', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        text,
        targetLanguage
      })
    });

    if (!response.ok) {
      throw new Error(`翻译服务错误: ${response.status} ${response.statusText}`);
    }

    const result = await response.json();
    if (!result.translatedText) {
      console.warn('翻译服务未返回结果，使用原文:', text);
      return text;
    }
    
    // 对药物名称的翻译结果进行验证
    const translatedText = result.translatedText;
    
    // 如果目标语言是英文，检查翻译结果是否合理
    if (targetLanguage === 'en') {
      // 移除明显的错误前缀，如"of "（常见翻译错误）
      let cleanedText = translatedText.trim();
      if (cleanedText.toLowerCase().startsWith('of ')) {
        cleanedText = cleanedText.substring(3).trim();
        console.warn(`检测到不合理的翻译前缀"of "，已移除: "${translatedText}" -> "${cleanedText}"`);
      }
      
      // 如果清理后的文本为空或不包含字母，使用原文
      if (!cleanedText || !/[a-zA-Z]/.test(cleanedText)) {
        console.warn(`翻译结果不合理，使用原文: "${translatedText}" -> "${text}"`);
        return text;
      }
      
      // 验证英文药物名称长度，过短可能有问题
      if (cleanedText.length <= 1) {
        console.warn(`英文药物名称 "${cleanedText}" 过短，使用原文: "${text}"`);
        return text;
      }
      
      return cleanedText;
    }
    
    // 如果目标语言是中文，检查翻译结果是否合理
    if (targetLanguage === 'zh') {
      // 移除明显的错误前缀
      let cleanedText = translatedText.trim();
      
      // 如果清理后的文本为空或不包含中文字符，使用原文
      if (!cleanedText || !/[\u4e00-\u9fa5]/.test(cleanedText)) {
        console.warn(`中文翻译结果不合理，使用原文: "${translatedText}" -> "${text}"`);
        return text;
      }
      
      // 验证中文药物名称长度，过短可能有问题
      if (cleanedText.length <= 1) {
        console.warn(`中文药物名称 "${cleanedText}" 过短，使用原文: "${text}"`);
        return text;
      }
      
      // 对于明显不合理的中文翻译（如单字或无意义的词），回退到原文
      const unreasonableTranslations = ['的', '了', '在', '是', '有', '和', '或', '但', '而', '然', '即', '若', '如', '为', '以', '所', '且', '也', '就', '便', '才', '可', '个', '种', '类', '型', '性', '化', '剂', '素', '液', '片', '针', '丸', '散', '膏', '丹', '胶', '膜', '栓', '带', '管', '盒', '瓶', '包'];
      if (cleanedText.length <= 2 && unreasonableTranslations.includes(cleanedText)) {
        console.warn(`中文药物名称 "${cleanedText}" 可能无意义，使用原文: "${text}"`);
        return text;
      }
      
      return cleanedText;
    }
    
    return translatedText;
  } catch (error: any) {
    console.error('翻译服务调用失败:', error.message || error);
    // 网络错误、解析错误或其他异常情况下返回原文
    return text;
  }
}

export default {
  translateText
}